Daniel van Vugt [Thu, 29 Nov 2018 16:31:58 +0000 (17:31 +0100)]
Sync to the hardware refresh rate, not just 60.00Hz
The Clutter master clock supports three synchronization methods in order of
preference:
(a) Hardware presentation times
(b) Swap throttling
(c) Fake vsync at 60.00Hz
X11 already supports all three but Wayland only has (c). This patch implements
both (a) and (b) for Wayland bringing it in line with X11.
Daniel van Vugt [Thu, 24 May 2018 09:51:22 +0000 (17:51 +0800)]
clutter: Fix offscreen-effect painting of clones
`ClutterOffscreenEffect` had been getting the wrong bounding box in the
case of clones and descendents of clones, causing visibly incorrect
clipping. This was due to `clutter_actor_get_paint_box` only ever being
given the source actor during a paint (which is correct) and not the clone.
Even if we weren't painting a clone but an offscreened descendent of a
clone (like in gnome-shell's desktop zoom), we would get the wrong result.
Fortunately we don't need to know the actual clone/actor being painted so
don't need to call the problematic `clutter_actor_get_paint_box` at all.
The solution is to only keep untransformed rendering in the FBO and leave
the correct transformation for later. The correct clone/actor's
transformation is already set for us as the current cogl modelview matrix
by `clutter_actor_paint`.
Bonus optimization: This all means we don't need to keep `last_matrix_drawn`
or force a full repaint every time some part of the transformation changes.
Because the FBO contents are no longer affected by transformations. As it
should be. In other words, offscreen-effected actors can now move around
on screen without themselves being repainted.
Special thanks to Mai Lavelle for identifying the cause of the problem.
Florian Müllner [Thu, 20 Oct 2016 16:00:04 +0000 (18:00 +0200)]
gtk-shell: Work around non-working startup notifications
GNOME Shell relies on the MetaScreen::startup-sequence-changed signal,
which is tied to (lib)startup-notification and therefore X11. As a result,
when we remove the startup sequence of a wayland client, GNOME Shell will
not be notified about this until startup-notification's timeout is hit.
As a temporary stop-gap, go through XWayland even for wayland clients,
so that the signal is emitted when expected.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=768531
Applied-upstream: no
Gbp-Pq: Name bgo768531_workaround-startup-notifications.patch
Jonas Ådahl [Thu, 11 Oct 2018 13:16:26 +0000 (13:16 +0000)]
monitor-manager: Don't use switch-config when ensuring configuration
Switch-configs are only to be used in certain circumstances (see
meta_monitor_manager_can_switch_config()) so when ensuring
configuration and attempting to create a linear configuration, use the
linear configuration constructor function directly without going via the
switch config method, otherwise we might incorrectly fall back to the
fallback configuration (only enable primary monitor).
Jonas Ådahl [Fri, 25 Jan 2019 21:06:39 +0000 (21:06 +0000)]
screen-cast: Fix monitor recording on HiDPI
It scaled the logical monitor rect with scale to get the stream
dimensions, but that is only valid when having
'scale-monitor-framebuffers' enabled. Even when it was, it didn't work
properly, as clutter_stage_capture_into() doesn't work properly with
scaled monitor framebuffers yet.
Carlos Garnacho [Tue, 18 Dec 2018 12:54:09 +0000 (12:54 +0000)]
tests: Don't check pixels outside actor allocation
The actor-shader-effect test actors are 50px wide, but we check the 51st
pixel. This went along undetected until "clutter: Avoid rounding
compensation when invalidating 2D actors" because the paint volumes were
made slightly bigger and the shaders paint all over them (I guess nobody
noticed those actors being actually ~52px wide).
Update the test to check the middle of the opposite edge, so we keep neatly
rounded numbers.
Carlos Garnacho [Fri, 5 May 2017 12:15:30 +0000 (14:15 +0200)]
clutter: Avoid rounding compensation when invalidating 2D actors
This allows the redraw clip to be more constrained, so MetaCullable doesn't
end up rendering portions of window shadows, frame and background when a
window invalidates (part of) its contents.
Daniel van Vugt [Thu, 11 Oct 2018 07:02:05 +0000 (07:02 +0000)]
clutter-offscreen-effect: Disable if no texture
If texture allocation fails (e.g. on an old GPU with size limit 2048)
then `update_fbo` would return `FALSE` but leaves `priv->offscreen`
as non-NULL. So the next paint will try to use the offscreen with a
`NULL` texture and crashes. The solution is simply to ensure that
`priv->offscreen` is NULL if there is no `priv->texture`, so the default
(non-offscreen) paint path gets used instead.
Bug reported and fix provided by Gert van de Kraats.
Daniel van Vugt [Thu, 11 Oct 2018 06:49:22 +0000 (06:49 +0000)]
cogl-auto-texture: Avoid a double-free crash
If texture allocation fails (e.g. on an old GPU with size limit 2048)
then `cogl_texture_new_with_size` was trying to use the same CoglError
twice. The second time was after it had already been freed.
Bug reported and fix provided by Gert van de Kraats.
Simon McVittie [Wed, 6 Feb 2019 10:02:14 +0000 (10:02 +0000)]
mutter (3.30.2-6) unstable; urgency=medium
* Team upload
* Update to upstream gnome-3-30 branch at 3.30.2-8-g7260ba5db
- Avoid rendering beyond the bounds of a 2D actor
- Fix screencasting/monitor recording on HiDPI
- Fix a regression in 3.30.1 that sometimes turned off secondary displays
- Update translations: fr, eu